跳到主要内容

JZ61 序列化二叉树

https://www.nowcoder.com/practice/cf7e25aa97c04cc1a68c8f040e71fb84

这题还是使用左神的解法去做

public class Solution {
// (序列化)使用先序的方式存储
String Serialize(TreeNode root) {
if (root == null) return "#_";
String val = String.valueOf(root.val) + "_";
return val + Serialize(root.left) + Serialize(root.right);
}


// (反序列化)需要使用队列去消费
TreeNode Deserialize(String str) {
String[] nodes = str.split("_");
Queue<String> queue = new LinkedList<>();
Collections.addAll(queue, nodes);
return readValue(queue);
}

private TreeNode readValue(Queue<String> queue) {
String value = queue.remove();
if ("#".equals(value)) return null;
TreeNode node = new TreeNode(Integer.parseInt(value));
node.left = readValue(queue);
node.right = readValue(queue);
return node;
}
}

主要看第三个方法,这个是核心(如何使用队列构建一颗树)